package com.cskaoyan.javase.object.wrapper;

/**
 * 包装类型的整型包括 Byte,Short,Character,Integer,Long
 * 它们直接如果需要比较数值大小
 * 不要使用"=="
 * 而是要使用equals
 * (原理有点类似于String)
 *
 * 这是因为整型的包装类型,当它的取值在一个byte[-128,127]的取值范围内时,
 * 会从缓冲中共享同一个对象,这样的话,用"=="判断就是true
 * 但是一旦不在一个byte[-128,127]的取值范围内时
 * 会重新创建一个新对象,这样的话,用"=="判断就是false
 * 这样"=="就不能用来判断了
 * 而equals方法永远比较value取值的大小,可以用来比较数值大小
 *
 * 包装类型实际上是用,对应基本数据类型的成员变量,作为该包装类型对象存储基本数据类型的取值
 * 这个成员变量叫value
 * 并且这个value是final修饰的,是一个成员常量,意味着它不能改变
 * 这说明,数值类型包装类型对象也是一个不可变的对象
 *
 * @since 11:01
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo5 {
    public static void main(String[] args) {
        // 引用指向对象
        Integer a = 123;
        Integer b = 123;
        // 双等号比较的是地址
        System.out.println(a == b);
        System.out.println(a.equals(b));

        Integer c = 200;
        Integer d = 200;
        System.out.println(c == d);
        System.out.println(c.equals(d));
    }
}
